﻿// 生成树形结构函数
function generateTree() {
    $.ajax({
        "url": "menu/do/build/tree.json",
        "type":"post",
        "dataType":"json",
        "success":function(response){
            let result = response.result;if(result == "SUCCESS") {
                // 创建 JSON 对象用于存储对 zTree 所做的设置
                let setting = {
                    view: {
                        addDiyDom: myAddDiyDom,
                        addHoverDom: myAddHoverDom,
                        removeHoverDom: myRemoveHoverDom
                    },
                    data: {
                        key: {
                            url:"NaURL"
                        }
                    }
                };
                // 从响应体中获取用来生成树形结构的 JSON 数据
                let zNodes = response.data;
                // 初始化树形结构
                $.fn.zTree.init($("#treeDemo"), setting, zNodes);
            } if
            (result == "FAILED") {
                layer.msg(response.message);
            }
        }
    })
}
// 在鼠标离开节点范围时删除按钮组
function myRemoveHoverDom(treeId, treeNode) {
    // 拼接按钮组的 id
    let btnGroupId = treeNode.tId + "_btnGrp";
    // 移除对应的元素
    $("#" + btnGroupId).remove();
}

// 在鼠标移入节点范围时添加按钮组
function myAddHoverDom(treeId, treeNode) {
    // 获取按钮组id
    let btnGroupId = treeNode.tId + "_btnGrp";
    // 判断一下以前是否已经添加了按钮组
    if ($("#" + btnGroupId).length > 0) {
        return;
    }
    // 准备各个按钮的 HTML 标签
    let addBtn = "<a id='" + treeNode.id + "' class='addBtn btn btn-info dropdown-toggle btn-xs'style='margin-left:10px;padding-top:0px;' title='添加子节点'>&nbsp;&nbsp;<i class='fa fa-fw fa-plus rbg '></i></a>";
    let removeBtn = "<a id='" + treeNode.id + "' class='removeBtn btn btn-info dropdown-toggle btn-xs'style='margin-left:10px;padding-top:0px;' title=' 删 除 节 点 '>&nbsp;&nbsp;<i class='fa fa-fw fa-times rbg '></i></a>";
    let editBtn = "<a id='" + treeNode.id + "' class='editBtn btn btn-info dropdown-toggle btn-xs'style='margin-left:10px;padding-top:0px;' title=' 修 改 节 点 '>&nbsp;&nbsp;<i class='fa fa-fw fa-edit rbg '></i></a>";
    // 获取当前节点的级别数据
    let level = treeNode.level;
    // 声明变量存储拼装好的按钮代码
    let btnHTML = "";
    // 判断当前节点的级别
    if (level == 0) {
        // 级别为 0 时是根节点， 只能添加子节点
        btnHTML = addBtn;
    }
    if (level == 1) {
        // 级别为 1 时是分支节点， 可以添加子节点、 修改
        btnHTML = addBtn + " " + editBtn;
        // 获取当前节点的子节点数量
        let length = treeNode.children.length;
        // 如果没有子节点， 可以删除
        if (length == 0) {
            btnHTML = btnHTML + " " + removeBtn;
        }
    }
    if (level == 2) {
        // 级别为 2 时是叶子节点， 可以修改、 删除
        btnHTML = editBtn + " " + removeBtn;
    }
    // 找到附着按钮组的超链接
    let anchorId = treeNode.tId + "_a";
    // 执行在超链接后面附加 span 元素的操作
    $("#" + anchorId).after("<span id='" + btnGroupId + "'>" + btnHTML + "</span>");
}

// 修改默认的图标
function myAddDiyDom(treeId, treeNode) {
    // 显示treeId的名字
    console.log(treeId);
    // 显示treeNode的具体内容
    console.log(treeNode);
    // 根据 id 的生成规则拼接出来 span 标签的 id
    let spanId = treeNode.tId + "_ico";
    // 根据控制图标的 span 标签的 id 找到这个 span 标签
    $("#" + spanId).removeClass().addClass(treeNode.icon);
}